import { NextResponse } from 'next/server';
import { prisma } from '@/lib/prisma';
import { auth } from '@/lib/auth';

// 创建管理员账户的API
export async function POST(request: Request) {
  try {
    const body = await request.json();
    const { username, password, email } = body;

    // 验证必要字段
    if (!username || !password) {
      return NextResponse.json(
        { error: '用户名和密码不能为空' },
        { status: 400 }
      );
    }

    // 检查管理员是否已存在
    const existingAdmin = await prisma.admin.findUnique({
      where: { username }
    });

    if (existingAdmin) {
      return NextResponse.json(
        { error: '管理员账户已存在' },
        { status: 400 }
      );
    }

    // 加密密码
    const { hash, salt } = auth.hashPassword(password);

    // 创建管理员账户
    const admin = await prisma.admin.create({
      data: {
        username,
        hash,
        salt,
        email,
        role: 'admin'
      }
    });

    // 返回创建的管理员信息（不包含密码）
    return NextResponse.json({
      admin: {
        id: admin.id,
        username: admin.username,
        role: admin.role
      }
    }, { status: 201 });
  } catch (error) {
    console.error('创建管理员失败:', error);
    return NextResponse.json(
      { error: '创建管理员失败' },
      { status: 500 }
    );
  }
}

// 验证管理员登录的API
export async function PUT(request: Request) {
  try {
    const body = await request.json();
    const { username, password } = body;

    // 验证必要字段
    if (!username || !password) {
      return NextResponse.json(
        { error: '用户名和密码不能为空' },
        { status: 400 }
      );
    }

    // 查找管理员
    const admin = await prisma.admin.findUnique({
      where: { username }
    });

    if (!admin) {
      return NextResponse.json(
        { error: '用户名或密码错误' },
        { status: 401 }
      );
    }

    // 验证密码
    const passwordMatch = admin.salt && admin.hash
      ? auth.verifyPassword(password, admin.hash, admin.salt)
      : false;

    if (!passwordMatch) {
      return NextResponse.json(
        { error: '用户名或密码错误' },
        { status: 401 }
      );
    }

    // 返回管理员信息（不包含密码）
    return NextResponse.json({
      admin: {
        id: admin.id,
        username: admin.username,
        role: admin.role
      }
    }, { status: 200 });
  } catch (error) {
    console.error('管理员登录验证失败:', error);
    return NextResponse.json(
      { error: '登录验证失败' },
      { status: 500 }
    );
  }
}